package com.shensi.api.admin.domian.coupon.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.shensi.common.core.annotation.Excel;
import com.shensi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 优惠劵发放方式对象 coupon_issue
 *
 * @author qujia
 * @date 2021-08-13
 */
public class CouponIssueDto extends BaseEntity {
    public CouponIssueDto() {
    }

    private static final long serialVersionUID = 1L;

    /**
     * 发放表主键id
     */
    private String id;

    /**
     * 发放类型 （1消费发放，2网页 静态二维码，3支付成功后的展示位，4plus会员专享）
     */
    @Excel(name = "发放类型 ", readConverterExp = "发放类型 （1消费发放，2网页 静态二维码，3支付成功后的展示位，4plus会员专享）")
    private String issueType;


    /**
     * 状态，1启用，2停用
     */
    @Excel(name = "状态，1启用，2停用")
    private String status;


    /**
     * 展示位置id(1支付成功之后的展示位，2待定，3待定)
     */
    @Excel(name = "展示位置id(1支付成功之后的展示位，2待定，3待定)")
    private String showId;


    @Excel(name = "发放次数")
    private Long giveCount;

    public Long getGiveCount() {
        return giveCount;
    }

    public void setGiveCount(Long giveCount) {
        this.giveCount = giveCount;
    }


    /**
     * 展示位置id(1支付成功之后的展示位，2待定，3待定)
     */
    @Excel(name = "发送限额")
    private Integer giveLimit;

    public Integer getGiveLimit() {
        return giveLimit;
    }

    public void setGiveLimit(Integer giveLimit) {
        this.giveLimit = giveLimit;
    }

    private List<String> showIdList;


    private String issueName;
    private String issueRemark;


    /**
     * 油品id集合
     */
    private List<SysOilDto> oilIdLists;

    /**
     * 油品id集合
     */
    private List<CouponInfoDto> couponInfoList;

    /**
     * 油品id集合
     */
    private List<SysStationUserDto> stationLists;
    private Long enterpriseId;

    /**
     * 主动发放时，优惠券发放门槛
     */
    @Excel(name = "被动发放时，优惠券发放门槛")
    private BigDecimal getThresholdAmt;
    //防作弊
    private String antiCheating;
    //一天最多几张
    private Long countOfDay;
    //使用门槛
    private BigDecimal couponThresholdAmt;
    //截止时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;
    //参与的用户（all,plus,part）
    private String memberCondition;

    //登记（1普卡2银卡3金卡4钻石5黑开）
    private String memberLevel;
    private List<String> memberLevelList;
    //支付方式（zfb,wx,xj,dzk,yl）
    private String paymentMethod;
    private List<String> paymentMethodList;
    //用户类型（olduser老用户，newuser新用户）
    private String memberTags;
    private List<String> memberTagsList;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startDate;

    private List<ThresholdDto> thresholdLadder;
    //是否事阶梯使用的 ladder阶梯constant定值
    private String thresholdType;

    //是否与活动互斥0否1是
    private String activityFlag;

    //单月参与无上限1有上限0
    private String antiMonthCheating;

    //单月参与次数
    private Integer countOfMonth;

    private Long oilPartOrAll;

    public Long getOilPartOrAll() {
        return oilPartOrAll;
    }

    public void setOilPartOrAll(Long oilPartOrAll) {
        this.oilPartOrAll = oilPartOrAll;
    }

    public String getAntiMonthCheating() {
        return antiMonthCheating;
    }

    public void setAntiMonthCheating(String antiMonthCheating) {
        this.antiMonthCheating = antiMonthCheating;
    }

    public Integer getCountOfMonth() {
        return countOfMonth;
    }

    public void setCountOfMonth(Integer countOfMonth) {
        this.countOfMonth = countOfMonth;
    }

    public String getActivityFlag() {
        return activityFlag;
    }

    public void setActivityFlag(String activityFlag) {
        this.activityFlag = activityFlag;
    }

    public String getThresholdType() {
        return thresholdType;
    }

    public void setThresholdType(String thresholdType) {
        this.thresholdType = thresholdType;
    }

    public List<ThresholdDto> getThresholdLadder() {
        return thresholdLadder;
    }

    public void setThresholdLadder(List<ThresholdDto> thresholdLadder) {
        this.thresholdLadder = thresholdLadder;
    }

    public List<CouponInfoDto> getCouponInfoList() {
        return couponInfoList;
    }

    public void setCouponInfoList(List<CouponInfoDto> couponInfoList) {
        this.couponInfoList = couponInfoList;
    }


    public List<String> getMemberLevelList() {
        return memberLevelList;
    }

    public void setMemberLevelList(List<String> memberLevelList) {
        this.memberLevelList = memberLevelList;
    }

    public List<String> getPaymentMethodList() {
        return paymentMethodList;
    }

    public void setPaymentMethodList(List<String> paymentMethodList) {
        this.paymentMethodList = paymentMethodList;
    }

    public List<String> getMemberTagsList() {
        return memberTagsList;
    }

    public void setMemberTagsList(List<String> memberTagsList) {
        this.memberTagsList = memberTagsList;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public BigDecimal getGetThresholdAmt() {
        return getThresholdAmt;
    }

    public void setGetThresholdAmt(BigDecimal getThresholdAmt) {
        this.getThresholdAmt = getThresholdAmt;
    }

    public String getAntiCheating() {
        return antiCheating;
    }

    public void setAntiCheating(String antiCheating) {
        this.antiCheating = antiCheating;
    }

    public Long getCountOfDay() {
        return countOfDay;
    }

    public void setCountOfDay(Long countOfDay) {
        this.countOfDay = countOfDay;
    }

    public BigDecimal getCouponThresholdAmt() {
        return couponThresholdAmt;
    }

    public void setCouponThresholdAmt(BigDecimal couponThresholdAmt) {
        this.couponThresholdAmt = couponThresholdAmt;
    }


    public String getMemberCondition() {
        return memberCondition;
    }

    public void setMemberCondition(String memberCondition) {
        this.memberCondition = memberCondition;
    }

    public String getMemberLevel() {
        return memberLevel;
    }

    public void setMemberLevel(String memberLevel) {
        this.memberLevel = memberLevel;
    }

    public String getMemberTags() {
        return memberTags;
    }

    public void setMemberTags(String memberTags) {
        this.memberTags = memberTags;
    }


    public List<SysStationUserDto> getStationLists() {
        return stationLists;
    }

    public void setStationLists(List<SysStationUserDto> stationLists) {
        this.stationLists = stationLists;
    }

    public Long getEnterpriseId() {
        return enterpriseId;
    }

    public void setEnterpriseId(Long enterpriseId) {
        this.enterpriseId = enterpriseId;
    }


    public List<SysOilDto> getOilIdLists() {
        return oilIdLists;
    }

    public void setOilIdLists(List<SysOilDto> oilIdLists) {
        this.oilIdLists = oilIdLists;
    }

    public String getIssueRemark() {
        return issueRemark;
    }

    public void setIssueRemark(String issueRemark) {
        this.issueRemark = issueRemark;
    }

    private List<String> appointedDaysList;
    private List<String> cycleDaysList;

    public List<CouponInfoDto> getCouponList() {
        return couponList;
    }

    public void setCouponList(List<CouponInfoDto> couponList) {
        this.couponList = couponList;
    }

    /**
     * 关联的优惠卷的信息
     */
    private List<CouponInfoDto> couponList;

    public String getIssueName() {
        return issueName;
    }

    public void setIssueName(String issueName) {
        this.issueName = issueName;
    }


    public List<String> getAppointedDaysList() {
        return appointedDaysList;
    }

    public void setAppointedDaysList(List<String> appointedDaysList) {
        this.appointedDaysList = appointedDaysList;
    }

    public List<String> getCycleDaysList() {
        return cycleDaysList;
    }

    public void setCycleDaysList(List<String> cycleDaysList) {
        this.cycleDaysList = cycleDaysList;
    }

    private List<Integer> couponIssueRelationList;

    public List<Integer> getCouponIssueRelationList() {
        return couponIssueRelationList;
    }

    public void setCouponIssueRelationList(List<Integer> couponIssueRelationList) {
        this.couponIssueRelationList = couponIssueRelationList;
    }

    public List<String> getShowIdList() {
        return showIdList;
    }

    public void setShowIdList(List<String> showIdList) {
        this.showIdList = showIdList;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setIssueType(String issueType) {
        this.issueType = issueType;
    }

    public String getIssueType() {
        return issueType;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }


    public void setShowId(String showId) {
        this.showId = showId;
    }

    public String getShowId() {
        return showId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("issueType", getIssueType())
                .append("status", getStatus())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("showId", getShowId())
                .toString();
    }
}
